
#ifndef _ILIB_BASE_H_
#define _ILIB_BASE_H_

#include "ILibrary.h"

namespace BWE
{
	class ILibBase : public ILibrary
	{
	public:
		static ILibrary* Instance();

		static void time(int argc, BValue* argv);

		static void min_byte(int argc, BValue* argv);
		static void min_char(int argc, BValue* argv);
		static void min_short(int argc, BValue* argv);
		static void min_int(int argc, BValue* argv);
		static void min_long(int argc, BValue* argv);
		static void min_real(int argc, BValue* argv);
		static void min_float(int argc, BValue* argv);
		static void min_double(int argc, BValue* argv);

		static void max_byte(int argc, BValue* argv);
		static void max_char(int argc, BValue* argv);
		static void max_short(int argc, BValue* argv);
		static void max_int(int argc, BValue* argv);
		static void max_long(int argc, BValue* argv);
		static void max_real(int argc, BValue* argv);
		static void max_float(int argc, BValue* argv);
		static void max_double(int argc, BValue* argv);

		static void swap_byte(int argc, BValue* argv);
		static void swap_char(int argc, BValue* argv);
		static void swap_short(int argc, BValue* argv);
		static void swap_int(int argc, BValue* argv);
		static void swap_long(int argc, BValue* argv);
		static void swap_real(int argc, BValue* argv);
		static void swap_float(int argc, BValue* argv);
		static void swap_double(int argc, BValue* argv);

		static void RTD_int(int argc, BValue* argv);
		static void RTD_real(int argc, BValue* argv);
		static void RTD_float(int argc, BValue* argv);
		static void RTD_double(int argc, BValue* argv);

		static void DTR_int(int argc, BValue* argv);
		static void DTR_real(int argc, BValue* argv);
		static void DTR_float(int argc, BValue* argv);
		static void DTR_double(int argc, BValue* argv);

		static void Zero_int(int argc, BValue* argv);
		static void Zero_real(int argc, BValue* argv);
		static void Zero_float(int argc, BValue* argv);
		static void Zero_double(int argc, BValue* argv);

		static void NonZero_int(int argc, BValue* argv);
		static void NonZero_real(int argc, BValue* argv);
		static void NonZero_float(int argc, BValue* argv);
		static void NonZero_double(int argc, BValue* argv);

		static void Equal_real(int argc, BValue* argv);
		static void Equal_float(int argc, BValue* argv);
		static void Equal_double(int argc, BValue* argv);

		static void ByteToHex(int argc, BValue* argv);
		static void ShortToHex(int argc, BValue* argv);
		static void UintToHex(int argc, BValue* argv);
		static void UlongToHex(int argc, BValue* argv);

		static void HexToByte(int argc, BValue* argv);
		static void HexToShort(int argc, BValue* argv);
		static void HexToUint(int argc, BValue* argv);
		static void HexToUlong(int argc, BValue* argv);

		static void Lerp(int argc, BValue* argv);
	};

}
#endif
